from pymysql import *

class JD(object):
    """京东商城"""
    def __init__(self):
        # 创建connection链接
        self.conn = connect(host="localhost",port=3306,user="root",password="mysql",
                    database="jing_dong",charset="utf8")
        # 获取cursor对象
        self.cs = self.conn.cursor()
    
    def __del__(self):
        # 关闭cursor对象
        self.cs.close()
        # 关闭链接
        self.conn.close()

    def execute_sql(self, sql):
        # 执行sql 语句
        self.cs.execute(sql)
        for temp in self.cs.fetchall():
            print(temp)

    def show_all_items(self):
        """显示所有的商品"""
        # sql = "select * from v_info;"
        sql = "select * from goods;"
        self.execute_sql(sql)

    def show_cates(self):
        """显示所有的分类名称"""
        sql = "select name from goods_cates;"
        self.execute_sql(sql)

    def show_brands(self):
        """显示所有的品牌名称"""
        sql = "select name from goods_brands;"
        self.execute_sql(sql)

    def add_brands(self):
        """添加的品牌名称"""
        item_name = input("输入新品牌的名称:")
        sql = """insert into goods_brands (name) values ("%s");""" % item_name
        self.cs.execute(sql)   # 增删改， 都需要提交，需要使用游标执行
        self.conn.commit()     # 因为修改了数据库中的数据，所以需要提交

    def get_info_by_name(self):
        """根据名字查询商品"""
        table_name = input("请输入要查询的表名:")
        find_name  = input("输入要查询商品的名字:")
 #        sql = """select * from goods where name = '%s';""" % find_name
 #        print("----->%s<------" % find_name)
 #        self.execute_sql(sql)
        sql = "select * from  {%content%}  where name= %s;"  # 防止sql注入 设置参数加码机制
        sql_content = sql.replace("{%content%}", table_name) 
        print("----->%s<------" % sql_content)
        self.cs.execute(sql_content, (find_name))
        print(self.cs.fetchall())


    @staticmethod
    def print_menu():
        print("--------京东--------")
        print("1:所有的商品")
        print("2:所有的商品分类")
        print("3:所有的商品品牌分类")
        print("4:添加品牌分类")
        print("5:根据名字查询商品:")
        ret = input("请输入功能对应的序号:")
        return ret

    def run(self):
        while True:
            num=self.print_menu()
            if num == "1":
                # 查询所有商品
                self.show_all_items()
            elif num == "2":
                # 查询分类
                self.show_cates()
            elif num == "3":
                # 查询品牌分类
                self.show_brands()
            elif num == "4":
                # 添加品牌分类
                self.add_brands()
            elif num == "5":
                # 根据名字查询商品
                self.get_info_by_name()
            else:
                print("输入有误，重新输入...")

def main():
    # 1.创建一个京东商城对象
    jd = JD()

    # 2.调用这个对象的run方法，使其运行
    jd.run()


if __name__ == "__main__":
    main()

